home *** CD-ROM | disk | FTP | other *** search
/ Network Support Library / RoseWare - Network Support Library.iso / btrieve / btr510.exe / BUGS.510 < prev    next >
Text File  |  1994-02-18  |  57KB  |  1,290 lines

  1. ==========================================================================
  2. PART I
  3. ------
  4.  
  5. Below is a listing of the patch files and their corresponding source files.
  6. When a patch is applied (left hand column), it changes the source
  7. file (right hand column):
  8.  
  9. Patch File:                 Files:             Size       Last Modified
  10. --------------              -------------- ------------- ---------------
  11. BPATOS2    510  --------->  BTRCALLS   DLL        40,674  9-14-90  9:05a
  12. BPATREQO   510  --------->  BTRCALLS   DLL        24,778 12-12-89 11:15a
  13. WTOOLPAT   510  --------->  BTRTOOLS   EXE       116,528  8-28-90 11:03a
  14. BPATWIN    510  --------->  WBTRCALL   DLL        51,392  8-28-90 10:24a
  15. BPATREQ    510  --------->  BREQUEST   EXE        17,874  3-22-90  3:46p
  16. BPATDOS    51A  --------->  BTRIEVE    EXE        42,524  7-12-90  5:21p
  17. BPATUT     510  --------->  BUTIL      EXE        44,912 12-11-89  4:03p
  18. BPATRTR    510  --------->  BROUTER    VAP        13,054 12-11-89  2:28p
  19. BPATVAP    510  --------->  BSERVER    VAP       132,015 12-11-89  3:08p
  20. BPATNLM    510  --------->  BTRIEVE    NLM        56,524  3-22-90  3:56p
  21.  
  22. ==========================================================================
  23. PART II
  24. -------
  25.  
  26. OPTIONAL PATCHES
  27.  
  28. Optional patches are applied by removing the (;) from the beginning of the
  29. patch line.  Instructions for implementing the optional patches are in
  30. the patch files.
  31.  
  32. Below is a listing of the optional patches and their corresponding patch files.
  33. The descriptions for the patches can be found in PART III of this document.
  34.  
  35. Patch #          Patch File:
  36. --------         --------------
  37.  
  38. #  7     ----->  BPATVAP    510
  39. # 20     ----->  BPATDOS    51A
  40. # 77     ----->  BPATDOS    51A
  41. # 98     ----->  BPATDOS    51A
  42. # 118    ----->  BPATDOS    51A
  43. # 122    ----->  BPATDOS    51A
  44. # 132    ----->  BPATOS2    510
  45. # 132    ----->  BPATWIN    510
  46. # 136    ----->  BPATWIN    510
  47. # 136    ----->  BPATOS2    510
  48. # 175    ----->  BPATDOS    51A
  49.  
  50. ==========================================================================
  51. PART III
  52. --------
  53.  
  54. Below is a listing of the patched products.  In parenthesis () is the
  55. environment for which the patch was created.
  56.  
  57.       Bug descriptions for :
  58.  
  59.       BTRIEVE (DOS, OS/2, Windows,  & NLM)
  60.       BSERVER(VAP),
  61.       BUTIL,
  62.       BTRTOOLS
  63.       Requester (DOS & OS2)
  64.  
  65.   1. Bserver (vap)
  66.      Note: Not a really a bug, but an improvement!
  67.  
  68.      If a GET DIRECT operation returns a record which has a null value in
  69.      the key field specified by key number (and the key allows duplicates) then
  70.      status 82 is returned. This is a correct status code. Sometimes, however,
  71.      the user is not interested in positioning by any of the keys; he simply
  72.      wants to retrieve the record. To achieve this, a new option is provided
  73.      by this patch: the user can specify -1 in the key number and then
  74.      ONLY the data will be returned (and of course, no status 82 will be
  75.      reported).
  76.  
  77.   2. Bserver (vap)
  78.  
  79.      Files with variable size records can become corrupted (in the variable
  80.      pages) if the page size is at least 1024 and the user stores many
  81.      records with extremely short (1 to 2 byte) variable parts.
  82.  
  83.   3. Bserver (vap)
  84.  
  85.      Files can be left open on a server if another connected server crashes
  86.      and Netware SQL has opened these files previously from the crashed
  87.      server.
  88.  
  89.   4. Bserver (vap)
  90.  
  91.      If 2 workstations hold record locks on the same file and then they both
  92.      start a transaction and attempt to get a record from this file (i.e. try
  93.      to lock the file), then both stations will be locked up, without getting
  94.      a status 78 ("deadlock detected") on one of the stations.
  95.  
  96.   5. Bserver (vap)
  97.  
  98.      Any file access (get,step,etc.) can return an erroneous status 85
  99.      (was previously documented here as an 84- "File in use") in a "no-wait"
  100.      transaction (op code 219).  It may also lock up in a regular transaction
  101.      (op code 19) if Station 1 was holding a record lock on the file BEFORE
  102.      it issued the BEGIN TRANSACTION and Station 2 had opened the file earlier
  103.      than Station 1.
  104.  
  105.   6. Bserver (vap)
  106.  
  107.      If the user passes Btrieve a file name in an illegal format (i.e. more
  108.      than an 8 character name or more than a 3 character extension) then
  109.      Btrieve stores it as it is given.  Netware 286, however, drops the extra
  110.      letters and will open a file which matches the re-formatted name (e.g if
  111.      given: "abcdefghij.klmno" then file "abcdefgh.klm" is opened if it exists).
  112.      This can cause a status 94 for another open if that other open is not
  113.      getting the same, "miss-spelled" name. This patch will make sure that
  114.      Btrieve will always store internally the the re-formatted file name.
  115.  
  116.   7. Bserver (vap)
  117.  
  118.      When all workstations are shut down on an ArcNet network, the VAP
  119.      operating system returns an error to all VAPs using the Service
  120.      Advertising Protocol.  This causes Bserver to issue an Error-Log message
  121.      of "Send Failure in Advertiser".   This patch is normally commented-out,
  122.      but may be enabled by users who find their error logs clogged up.
  123.  
  124.   8. Bserver (vap)
  125.  
  126.      The following scenario produces an erroneous status 14:
  127.          a. first a workstation opens a file read-only;
  128.          b. the same file is opened again in regular mode once or more times
  129.             (either by another or by the same workstation);
  130.          c. using the "regular-mode" handle(s) do some operations which involve
  131.             the preimage file of the file (insert, update, delete, or transact)
  132.          d. close the file on all handles so that the "read-only" handle does
  133.             the LAST close;
  134.          e. open the file again in regular mode and try to do any operation
  135.             which uses the pre-image file.
  136.  
  137.   9. Brequest
  138.  
  139.      This patch makes BRequest aware of a new error code #74, which results
  140.      when an END_TRANS function is internally changed to an ABORT_TRANS due
  141.      to a previous error within the transaction.  Without this patch,
  142.      Brequest will stop broadcasting the END_TRANS to all servers when this
  143.      error is encountered.  This can result in the transaction left open on
  144.      another server.
  145.  
  146.  10. Brequest
  147.  
  148.      This patch fixes BRequest so that it can reset another workstation by
  149.      connection number without also resetting itself and terminating its own
  150.      connection.
  151.  
  152.  11. Brequest
  153.  
  154.      This patch fixes a BRequest SPX input queuing problem which can result
  155.      in lost packets and even BRequest lock-up when overloaded.  This problem
  156.      is generally seen only if a very slow workstation is talking to a very
  157.      fast (and lightly loaded) BServer.  It may also appear when BRequest is
  158.      running in a DesqView window with other processes (such as copying from
  159.      a hard disk to a floppy), since that effectively slows the W.S.
  160.  
  161.  12. BUTIL.EXE
  162.  
  163.      Increased stack size to 22K bytes.  Btrieve utilities for COPY and
  164.      INDEX were crashing due to insufficient stack space to accommodate
  165.      local variables.
  166.  
  167.  13. Brequest
  168.  
  169.      This patch was made to satisfy a user request that BRequest should be able
  170.      to alternately attach, query, and detach to an indefinite number of
  171.      BServers.  Currently, BRequest would have to be unloaded after the 8th
  172.      server is attached.
  173.  
  174.  13/a Brequest
  175.  
  176.      This patch is required in conjunction with patch #13 and ALSO fixes a
  177.      longstanding problem where a Begin_Transaction immediately after mapping
  178.      to a new server would fail to broadcast the transaction to that server.
  179.  
  180.  14. Btrieve (NLM- NetWare 3.0; NetWare 3.1 patch #1)
  181.  
  182.      An incompatibility with the rest of the Btrieve products:
  183.        The Get Position operation following a Delete operation returns
  184.        status 43 instead of status 8.
  185.  
  186.  15. OS/2 Requester
  187.  
  188.      15.a Returning status 22 on extended inserts
  189.      15.b Version returned was 5.0
  190.  
  191.  16. OS/2 Requester
  192.  
  193.      Opening a file on a different server than previously opened files
  194.      could have resulted in a status 12 despite correct filenames
  195.      and drive mappings.
  196.  
  197.  17. OS/2 Requester
  198.  
  199.      Random status 12 or 91 returned when opening a file.
  200.      This occurs if two file servers in the LAN have identical internet
  201.      addresses except for the last byte, and if the desired server is
  202.      found after the other in the bindery scanned for BSERVER VAP's.
  203.  
  204.  18. OS/2 Requester
  205.  
  206.      Protection violation generated by the COBOL interface due to the
  207.      requester not restoring the caller's SI and DI registers on return.
  208.      This could, but hasn't yet, be caused in other languages as well.
  209.  
  210.  19. Btrieve (NLM- NetWare 3.0; Netware 3.1 patch #2)
  211.  
  212.      Without this patch various random error status can be returned when using
  213.      variable length pages or using truncation.
  214.  
  215.  20. Btrieve (DOS)
  216.  
  217.      Btrieve will hang if a TSR or device driver is using it and that
  218.      TSR/device driver was called from DOS after the DOS-busy flag has
  219.      been set.  This patch is normally "commented-out."  It causes Btrieve
  220.      to ignore the DOS-busy flag, instead of waiting for it to clear
  221.      before Btrieve makes DOS calls.  Only apply this patch if you are sure
  222.      that it is needed; that is, only if your application is calling
  223.      Btrieve while the DOS-busy flag is set AND you are sure that DOS is
  224.      not really busy!
  225.  
  226.  24. Btrieve (DOS, NLM- Netware 3.0; Netware 3.1 patch #5)
  227.  
  228.      Get Key-only operations are not updating the position block.
  229.  
  230.  25. Btrieve (vap)
  231.  
  232.      Logging to a different volume of the same server does not work properly.
  233.  
  234.  27. Btrieve (VAP, NLM- Netware 3.1 patch #7)
  235.               & Brequest (DOS, os/2 )
  236.  
  237.      For data-only files, Btrieve was returning data to the key buffer
  238.      after Get Direct, Update, Insert and Extended Insert.
  239.      *** THE PATCH MUST BE MADE BOTH TO THE VAP (OR NLM) AND THE REQUESTER ***
  240.          THE VAP (OR NLM) SENDS A FLAG TO THE REQUESTER- IF YOU DON'T PATCH
  241.          THE REQUESTER THE FLAG WILL NOT BE UNDERSTOOD AND THE PROBLEM WILL
  242.          STILL BE PRESENT.
  243.  
  244.  28. Btrieve (DOS)
  245.  
  246.      A file can become corrupted if a work station opens a file as another
  247.      workstation closes the same file from an accelerated processing mode
  248.      (timing-related bug, which is corrected by this patch).
  249.  
  250.  30  Btrieve (vap, DOS)
  251.  
  252.      Btrieve will return an erroneous status 26 when a supplemental
  253.      index with 8 segments is added to a data only btrieve file of
  254.      size 512 bytes.
  255.  
  256.  31  Btrieve (DOS)
  257.  
  258.      Btrieve will return an erroneous status 83's when it does Insert Extended
  259.      operations within a transaction.
  260.  
  261.  33  Btrieve (vap, NLM- NetWare 3.1 patch #10)
  262.  
  263.      This fixes the following bug: after a Get Direct returned a status 22
  264.      (user's data buffer too small), the user's key buffer was being
  265.      overwritten with garbage.   It also fixes a bug in which the NLM
  266.      was not returning a key value after a Get Direct returned a status 22
  267.      when the user's data buffer WAS long enough to at least receive the
  268.      fixed length portion (including the keys) of the record.
  269.      *** THIS PATCH WILL ONLY WORK IF PATCH #27 HAS BEEN APPLIED TO THE ***
  270.          VAP OR NLM AND BREQUEST.EXE !!!
  271.  
  272. 34  Btrieve (vap)
  273.  
  274.     Fixes a bug which caused a GPI crash on the vap's server when the
  275.     application used the Extended Insert function and passed a data buffer
  276.     larger than the "Largest record size" parameter configured by Bsetup.
  277.  
  278. 35  Btrieve (DOS)
  279.  
  280.     Fixes a bug which caused btrieve to unnecessarily make a preimage
  281.     file if the very first operation requested after Btrieve was loaded
  282.     was a Create.
  283.  
  284. 36  Btrieve (DOS)
  285.  
  286.      Fixes a bug in which btrieve crashes (or perhaps shows other
  287.      unpredictable symptoms) when updating a record retrieved with a
  288.      get direct or step (no key) operation if there has been no insert
  289.      nor get (using a key) since the file was open, and if the file's
  290.      position block array contained values other than binary zeros prior
  291.      to the file's open operation.
  292.      (Fixes problem where update to dataonly file after StepFirst
  293.       hangs the workstation)
  294.  
  295. 37   Btrieve (NLM- Netware 3.1 patch #11, DOS, and vap)
  296.  
  297.      Fixes a bug which caused Btrieve to return an incorrect status 2
  298.      when a record was deleted from a file with a supplemental index.
  299.      This bug is most likely to occur only if few records have been inserted
  300.      since the creation of the supplemental index.  The bug only occurs
  301.      on the VAP or DOS if the supplemental index was created with the NLM.
  302.  
  303. 38   BTRTOOLS - (Windows Btrieve utilities)
  304.  
  305.      This patch stops the description file utility from dropping the first
  306.      word of the comments from the description file.
  307.  
  308. 39   Btrieve (OS/2)
  309.  
  310.      Fixes a bug which would cause a segmentation violation during
  311.      re-initialization through BTRVINIT().
  312.  
  313. 40   Btrieve ( vap )
  314.  
  315.      Fixes an error in patch #34 for the vap.  This error causes a status 39
  316.      to be returned when XQLI starts up.
  317.  
  318. 41   Btrieve ( OS/2 & Windows )
  319.  
  320.     Fixes a bug which caused btrieve to unnecessarily make a preimage
  321.     file if the very first operation requested after Btrieve was loaded
  322.     was a Create.
  323.  
  324. 42   Btrieve ( OS/2 & Windows )
  325.  
  326.      Fixes a bug in which btrieve crashes (or perhaps shows other
  327.      unpredictable symptoms) when updating a record retrieved with a
  328.      get direct or step (no key) operation if there has been no insert
  329.      nor get (using a key) since the file was open, and if the file's
  330.      position block array contained values other than binary zeros prior
  331.      to the file's open operation.
  332.      (Fixes problem where update to dataonly file after StepFirst
  333.       hangs the workstation)
  334.  
  335. 43   Btrieve ( OS/2 & Windows )
  336.  
  337.      Fixes a bug which caused Btrieve to return an incorrect status 2
  338.      when a record was deleted from a file with a supplemental index.
  339.      This bug is most likely to occur only if few records have been inserted
  340.      since the creation of the supplemental index.  This bug will only
  341.      occur in Btrieve for Windows or OS/2 when using a file created by
  342.      the NLM Btrieve.
  343.  
  344. 44   Btrieve ( DOS & OS/2 )
  345.  
  346.      Fixes this bug: A file is opened in exclusive mode.  The application
  347.      then repeats the following sequence a several times, each time using a
  348.      different record: it retrieves a record using a multiple record lock
  349.      bias (300 or 400), then it updates or deletes that record (which should
  350.      clear the lock).  Eventually, a status 81 (Lock Error) is returned.
  351.      The number of times it can repeat the sequence before the status 81
  352.      is determined the user's specification of the maximum number of multiple
  353.      locks (/L:).  For DOS Btrieve, this bug will also appear if the file is
  354.      opened in other modes, provided that the file is on a non-network drive
  355.      and SHARE.EXE is not loaded.
  356.  
  357. 45   BTRTOOLS (Windows)
  358.  
  359.      Fixes bug which required File Information key count to match total
  360.      key/segment count in description file.  This was for the description
  361.      file edit utility.
  362.  
  363. 46   Btrieve (DOS, see 158 for OS/2 and 165 for Windows)
  364.  
  365.      Btrieve does not return status code 83 when a record is updated but
  366.      not read inside a transaction.
  367.  
  368. 51   BUTIL.EXE
  369.  
  370.      Clone is created incorrectly for a file which has at least one multi-
  371.      segmented supplemental key and one or more additional supplemental keys.
  372.  
  373. 52   BROUTER (VAP)
  374.  
  375.      This bug causes the server to GPI or ABEND if a Btrieve CREATE call
  376.      is made to a REMOTE server.
  377.  
  378. 53   BROUTER (VAP)
  379.  
  380.      If there are more than 100 file servers on the network(s), then BRouter
  381.      will sometimes crash when building its server tables.
  382.  
  383. 54   BROUTER (VAP)
  384.  
  385.      This patch fixes a BRouter SPX input queuing problem which can result
  386.      in lost packets.  It also fixes lock-up problems caused by an over-
  387.      loaded on BRouter.
  388.  
  389. 55   Btrieve (VAP, DOS, Windows, OS/2)
  390.  
  391.      If VAP Btrieve has a file open, and DOS or Windows Btrieve (running on
  392.      a workstation) tries to open a file in the Normal, Verify, or Exclusive
  393.      modes, DOS/Windows/OS2 Btrieve incorrectly returned a status 94.  This
  394.      patch makes it return the correct status, 85.  Similarly, if Btrieve
  395.      running on a workstation has a file open and VAP Btrieve tries to
  396.      open it (any mode), VAP Btrieve was returning a 94.  Now it'll return
  397.      an 85.  Also, if a workstation Btrieve tries to open a file in
  398.      Accelerated mode in a directory in which the user does not have Netware
  399.      Write permission, an incorrect status of 85 was being returned.  Now
  400.      it returns a 94.
  401.  
  402. 56   Btrieve (VAP)
  403.  
  404.      This bug allowed a user to open and write to files in directories
  405.      in which the user has no Write permission.
  406.  
  407. 58   Btrieve (VAP)
  408.  
  409.      This is not really a bug but it allows applications which "illegally"
  410.      change the key number when executing an update operation to operate
  411.      without getting a status 7. (Earlier versions did not catch the user
  412.      when changed the key number, so this fix makes 5.10 backward compatible
  413.      in this respect.)
  414.  
  415. 62   Btrieve (!!!! Only for IBM PC LAN users !!!!)
  416.  
  417.      Changes executed on a file within a transaction are erroneously rolled
  418.      back if another station accesses the file before an End Transaction (op19)
  419.      executed on the first station.
  420.  
  421. 64   Btrieve ( DOS )
  422.  
  423.      If the user attempts to install Btrieve with the /F:nn parameter to
  424.      specify that Btrieve allow more than 20 open files, and for any reason
  425.      the attempted installation fails (e.g., Btrieve already loaded), then
  426.      this bug could cause unpredictable symptoms, most likely hanging the
  427.      system.
  428.  
  429. 65   Btrieve ( OS/2 )
  430.  
  431.      Cntl-Break causes program to hang because OS/2 does not clear
  432.      the Btrieve semaphore owned by the process, nor does it let the process
  433.      finish the Btrieve operation before terminating.  The ExitList routine
  434.      was waiting for the semaphore to clear.  Cntl-C does not cause have
  435.      this problem.
  436.  
  437. 67   Btrieve (vap)
  438.  
  439.      This fixes a bug in an undocumented Btrieve function call which is
  440.      used by NetWare SQL in its "alter table" function.  This bug was
  441.      introduced by patch #6.
  442.  
  443. 68   BROUTER (VAP, NLM- NetWare 3.1 patch #22)
  444.  
  445.      This fixes an interface problem between both BROUTERs and the Btrieve NLM
  446.      when doing an update operation on a key number other than 0.  In some
  447.      cases this could result in over-writing the front of the record.
  448.  
  449. 69   Btrieve ( DOS, Windows, OS/2 )
  450.  
  451.      When the user attempts to use Btrieve's logging feature, and specifies
  452.      a log file on a different volume of the same server on which the
  453.      file-to-be-logged resides, logging does not happen.  This patch fixes
  454.      the problem for DOS and Windows Btrieve.  However, this problem is
  455.      not patchable for OS/2 Btrieve.
  456.  
  457. 71   Btrieve ( DOS, Windows, OS/2, VAP, NLM- NetWare 3.1 patch #24 )
  458.  
  459.      When an application does a Step Next or Step Previous (or Extended
  460.      Step Next/Previous) after a Delete, Btrieve should return a status
  461.      8, Invalid Positioning.  Instead, this bug causes it to go into an
  462.      endless loop.  With the VAP & NLM, the workstation will appear to be
  463.      hung, too.  This patch fixes that bug.  (The bug only appears if the
  464.      record deleted has a physical position > 0xffff.)  Also fixed is a
  465.      related symptom of this bug: DOS, Windows and OS/2 Btrieve incorrectly
  466.      return a status 0 if you do a Get Position after a Delete.
  467.  
  468. 73   Btrieve (DOS, Windows, OS/2)
  469.  
  470.      Fixes a bug which shows up in the following scenario: an application has
  471.      two files open, and file #2 is opened in accelerated mode.  It closes
  472.      file #1.  It does some updates/inserts to file #2.  It closes file #1
  473.      again (an error which returns a status 3).  Many of the recent changes
  474.      to file #2 will be lost.
  475.  
  476. 74   Btrieve (DOS, Windows, OS/2)
  477.  
  478.      When using the Btrieve logging feature, the Reset operation was not
  479.      being logged and the log files were being left opened after a Reset.
  480.  
  481. 76   Btrieve (DOS)
  482.  
  483.      This corrects severe performance degradation on simple reads during
  484.      inserts by another WS with a transaction on the file.  This was caused by
  485.      waiting in a loop for a lock instead of simply verifying a not-locked
  486.      state and returning.
  487.  
  488. 77  Btrieve (DOS)
  489.  
  490.      Btrieve 5.10 uses a new mechanism in order to keep more than 20 files
  491.      open to DOS at a time instead of rotating the 20 available handles.
  492.      This can cause Btrieve to compete with the application for available DOS
  493.      or NetWare handles where it did not previously do so.  One solution is
  494.      to set the NetWare shell configuration to allow more than the default 40
  495.      handles.  A low-performance solution is to use this patch to disable the
  496.      new mechanism and keep the 20 handle rotation limit.  This allows 5.10 to
  497.      substitute for 5.00 without any environment changes, but at a cost.
  498.  
  499. 78   Btrieve (DOS, Windows, OS/2, VAP) and BROLLFWD.
  500.  
  501.      If the computer on which DOS, Windows, or OS/2 Btrieve is running is
  502.      turned off or rebooted during a transaction, Btrieve's implicit Abort
  503.      Transaction, which is performed when the files involved are next opened,
  504.      was not being properly logged.  Also, with BSERVER.VAP, there was a small
  505.      timing window in which, if the server is turned off during an update,
  506.      delete, or insert, the VAP may improperly log an operation when the
  507.      involved files are reopened.  In each of these cases, the improper logging
  508.      would confuse BROLLFWD.  (Note: BROLLFWD is not being patched.  You
  509.      must use version 5.15 of BROLLFWD to fix this bug.)
  510.  
  511. 79   Btrieve (DOS)
  512.  
  513.      RECALLED AND RE-RELEASED AS PATCH #116!!
  514.  
  515.      If an End Transaction operation is interrupted (by a reboot, or power
  516.      down), Btrieve may not be able to use the transaction file.  DOS Btrieve
  517.      displays "Unable to access btrieve file for transaction recovery" and
  518.      will not load.  Windows and OS/2 Btrieve return a status 1002.  This
  519.      patch is for DOS Btrieve only.  Windows and OS/2 Btrieve will be fixed
  520.      in the next release.
  521.  
  522. 81   Btrieve (DOS,Windows,OS/2)
  523.  
  524.      The user's Filter_Reject_Count on GET_EXTENDED operations was limited
  525.      to 128 records, regardless of the length passed in, resulting in error
  526.      #60 when records should have been returned.  This removes that limit.
  527.  
  528. 82  Btrieve (OS/2)
  529.  
  530.       Multiple sessions accessing the same transaction control file caused the
  531.       sessions to become hung up.
  532.  
  533. 83  Btrieve (DOS, Windows, OS/2, VAP)
  534.  
  535.       When creating a supplemental index using a null key and an extended
  536.       key type, if the null value is an even number, Btrieve will not
  537.       recognize the extended key type but will instead use the 3rd bit of the
  538.       key flags word to flag the key as either binary or string.
  539.  
  540. 84  Btrieve ( DOS )
  541.  
  542.       Status 93s were sometimes returned when doing multiple locks on many
  543.       files.  The error could not be cleared by a RESET; it could only be
  544.       cleared by reloading btrieve.  This was caused when a failure to open
  545.       the transaction file, because of NO_DOS_HANDLES, caused the system to
  546.       "rotate" handles by closing an old one.  A bug in the rotation code
  547.       caused a file with a lock to be closed without clearing the lock record.
  548.       This record then resulted in a false state in later operations, leading
  549.       to the status 93.  This problem can also be solved by increasing the
  550.       /F parameter, since this occurs only when operating at the file limit.
  551.  
  552.  
  553. 85  Btrieve ( DOS )
  554.  
  555.       When doing an END TRANSACTION with logging on, the workstation would
  556.       sometimes hang in a loop waiting for the log file lock to clear when
  557.       the workstation itself was responsible for that lock.  This fix clears
  558.       all locks at END TRANS time.
  559.  
  560. 90   BTRIEVE (OS/2,WINDOWS)
  561.  
  562.       The SET_DIR operation was not restoring the DS register before setting
  563.       the status code if the operation failed.  The status code was set
  564.       using the DS register of the KEY BUFFER.
  565.  
  566. 91   VAP Btrieve: BSERVER.VAP, version 5.10
  567.  
  568.      With multiple workstations involved in transactions, a client could
  569.      receive erratic and non-repeatable status 2s on operations ranging from
  570.      OPENs to GETs on a file already opened.  The root cause is that one
  571.      client has opened the file to his TTS task and the file has subsequently
  572.      been closed for rotation due to limited handles.  The problem is that
  573.      the file must be re-opened on the next access, but only the owner task
  574.      can do so.  All others get errors that translate to 2.  The problem
  575.      disappears as soon as the first client accesses or ends his transaction.
  576.      This bug is therefore timing-related and very hard to pin down.  This
  577.      fix allows other clients to temporarily assume the right task #.
  578.  
  579. 92.  VAP Btrieve: BSERVER.VAP, version 5.10
  580.  
  581.      After an Extended Insert, the data buffer should be passed back with
  582.      a count of records successfully inserted in the first word of the
  583.      buffer.  However, this bug prevented the data buffer from being sent
  584.      to the application if the Extended Insert returned a non-zero status.
  585.  
  586. 93.  Btrieve (DOS, Windows, OS/2, VAP)
  587.  
  588.      The STAT command would return 0 for unused pages whenever the number was
  589.      greater than 32K (32768).  This forces a non-zero return.
  590.  
  591. 95.  Btrieve (DOS, Windows, and OS/2)
  592.  
  593.      When building a supplemental index (Op 31) on a file opened in
  594.      accelerated mode, if a duplicate key value is found and duplicates are
  595.      not allowed for the index being built, btrieve enters an infinite loop.
  596.  
  597. 96.  Btrieve (DOS, Windows, and OS/2)
  598.  
  599.      If a file server is POWERED DOWN after a Btrieve insert operation,
  600.      the data file may sometimes be truncated, returning status 4 or other
  601.      errors when the server is restarted.  This is due to a failure to commit
  602.      the expansion due to additional pages.  This patch issues a DISK RESET
  603.      at the end of each operation to force an update of the directory.
  604.  
  605. 97.  Btrieve (DOS, Windows, and OS/2)
  606.  
  607.      If Btrieve was not able to close a file during a Reset operation,
  608.      instead of returning a Status 2, Btrieve would act unpredictably,
  609.      most likely hanging or crashing the work station.  (In the OS/2
  610.      environment, a protection violation will probably be detected.)
  611.      This bug was introduced by patch #74.
  612.  
  613. 98.  Btrieve (DOS)
  614.  
  615.      This patch has been re-released as patch #124.
  616.  
  617. 99.  Btrieve (DOS)
  618.  
  619.      This patch is the opposite of patch #77 so they should not be used
  620.      together. This patch causes the allocation of TWICE as many DOS file
  621.      handles as was specified by the "/F" parameter.  In other words, a 2:1
  622.      ratio rather than the customary 1:1.  This allows both the data and
  623.      preimage files to remain open for all AFL entries in order to avoid the
  624.      cost of closing files for handle rotation.  Since each DOS handle entry
  625.      takes only one additional byte, the memory cost is minimal.
  626.  
  627. 100. Btrieve (OS/2)
  628.  
  629.      When a connection to a file server is lost and a RESET or ABORT
  630.      is done the operation would fail on the file handles for the lost
  631.      server.  This patch causes Btrieve to continue with the operation
  632.      and ignore any  failures.  This patch also guarantees a zero return
  633.      code on a RESET operation.  This should be done for all client versions,
  634.      but only done here for OS/2 and is source fixed for next versions.
  635.  
  636. 101. Btrieve (OS/2)
  637.  
  638.      When a connection to a file server is lost, lock operations on the
  639.      file return a LOCK VIOLATION status rather than an invalid handle.
  640.      This incorrect status is returned by the NetWare requester.  The result
  641.      is that Btrieve keeps retrying the lock assuming that the status means
  642.      someone else has it locked.  To get around the problem, a LSEEK to EOF
  643.      is done to verify the handle.
  644.  
  645. 103. Btrieve (OS/2)
  646.  
  647.      If errors occur during a CLOSE, continue processing to clean out AFL
  648.      and close the handle to clear the system handle table.
  649.  
  650. 104. Btrieve (Windows)
  651.  
  652.      Removes "Beta Version" from header description seen using EXEHDR.
  653.      Also changes incorrect version number in description from 5.11 to
  654.      5.10.
  655.  
  656. 105. Btrieve (Windows,OS/2)
  657.  
  658.      Comparasion of segment limit and length of structure for parameter
  659.      checking was incorrect.
  660.  
  661. 106. Btrieve (OS/2)
  662.  
  663.      Due to yet another incorrect status from an OPEN of the TRN file, Btrieve
  664.      was placed in a loop retrying the open to a server whose connection was
  665.      lost due to power down or other means.  This occurred on END_TRAN.
  666.      Fixed by retrying open only on status codes 5 (INVALID_ACCESS) and
  667.      32 (SHARING_VIOLATION).
  668.  
  669. 107. Btrieve (DOS, Windows, OS/2)
  670.  
  671.      A stat 80 was returned on an update, with only 1 workstation accessing
  672.      the file. It only happened after a successful insert that had expanded
  673.      the file size by allocating a new page to it.
  674.  
  675. 108.  NLM Btrieve: BTRIEVE.NLM, version 5.15
  676.  
  677.       When a VERY large preimage file is produced, as in a large transaction,
  678.       a value greater than 32k is mistakenly treated as signed and is
  679.       sign-extended with FFs.  This is later interpreted as a VERY large
  680.       unsigned value when passed to the operating system, causing a GPI.
  681.       This patch makes the conversion WITHOUT sign-extension.
  682.  
  683. 109.  Btrieve (OS/2)
  684.  
  685.       Garbage status being returned during transaction recovery.  All error
  686.       status codes should be ignored anyway, so the status is now ignored.
  687.  
  688. 110.  This is a fix for patch #84.  A typo resulted in 58 where 5B should be.
  689.  
  690. 111.  Btrieve (DOS, Windows,VAP and see 134 for os2)
  691.  
  692.       During insertation and update, unnecessary key pages are recorded in
  693.       .PRE file.
  694.  
  695. 112.  Btrieve (DOS, Windows, VAP and see 133 for os2)
  696.       * Patch 112 for Windows, OS/2, VAP will be released at a later date.
  697.  
  698.       If the file opened in accelerated mode returns status 5 during an
  699.       update the file might become corrupted without any spectacular
  700.       symptom of the corruption. (In the reported case a key was lost
  701.       from the Btree.)
  702.  
  703. 113.  Btrieve (DOS, Windows,VAP and see 135 for os2)
  704.  
  705.       The following bugs have been fixed regarding to GET_DIRECT operation:
  706.        - GET_DIRECT after deletion of the record by another application gives
  707.          status 2.
  708.        - GET_NEXT after GET_DIRECT returns status 9, if the file contains
  709.          records with duplicate values.
  710.        - Sometimes the returned status code by GET_DIRECT following a
  711.          DELETE operation are different.
  712.        - In certain cases after deletion of the last record GET_DIRECT
  713.          does not report an error status on the just deleted record.
  714.  
  715. 114.  Btrieve (DOS, Windows)
  716.  
  717.       When doing an END TRANSACTION with logging on, an already opened
  718.       Btrieve file would sometimes open again and it even remains open after
  719.       the application's finishing.
  720.  
  721. 115.  Btrieve (DOS, Windows, and OS/2)
  722.  
  723.       If Btrieve is configured with no compression buffer, or with a
  724.       compression buffer that is too small ( /u parameter ), the Step
  725.       operations incorrectly return a status 54 (Variable Page Error)
  726.       instead of the correct status, 58.  This patch fixes the problem.
  727.  
  728. 116.  Btrieve (DOS)
  729.  
  730.       This is a fix for the case where
  731.         (a) patch #79 has been applied
  732.         (b) Btrieve operates on a NetWare Lite network and
  733.         (c) the .TRN file is redirected over the network (and is used by
  734.             another instance of Btrieve ??).
  735.  
  736.       Given all of this, a simple series of operations will either fail or hang
  737.       the machine (depending on NWLite's version#). (Note: this is a slightly
  738.       rewritten patch 79, so whatever it has fixed, this 'new' patch will
  739.       fix too.)
  740.  
  741.  
  742. Grow Patch Btrieve DOS
  743.  
  744.       This patch does not fix any bug, but instead allocates a new patch
  745.       area, to be used by subsequent patches.  It will increase the size
  746.       of BTRIEVE.EXE, WBTRCALL.DLL and BTRCALLS.DLL by 512 bytes, and
  747.       cause Btrieve to use an additional 512 bytes of RAM.
  748.  
  749. 117.  Btrieve (DOS)
  750.  
  751.       Actually this bug is caused by patch #112. This patch fixes the problem
  752.       with the patch #112. Both of these patches should be used to eliminate
  753.       the original bug mentioned at patch #112.
  754.  
  755. 118.  Btrieve (DOS, and see 132 for OS/2 and Windows)
  756.  
  757.       This patch enables Btrieve to understand Shift-JIS DBCS characters in
  758.       file specifications, so that our Japanese customers can use Kanji
  759.       characters in their Btrieve filenames.  The patch follows the Shift-JIS
  760.       standard, namely that code points in the ranges 0x81-0x9F and
  761.       0xE0-0xFC are the 1st byte of a double-byte character and that the
  762.       second byte of a double-byte character is never less than 0x40.
  763.       Do not apply this patch unless you are running in a DBCS (Shift-JIS)
  764.       environment.  (This patch uses the new patch area.)
  765.  
  766. 119.  Btrieve (DOS, and see 137 for OS/2 and Windows)
  767.  
  768.       If you set up an extended step/get operation (op.36/37/38/39) to only
  769.       return record positions (NumOfFields = 0) and not any of the record
  770.       data and you specify the data buffer just as long as required
  771.       by Btrieve you will get a status 22.
  772.       This patch fixes the problem and returns the record positions.
  773.  
  774. 120.  Btrieve (DOS, see 131 for OS/2 and Windows)
  775.  
  776.       The usage count does not need to be read for files opened in exlusive
  777.       mode. This eliminates a disk read for each operation.  There are no bad
  778.       effects from reading the count, but is simply a wasted effort.
  779.       (Only released for DOS and OS/2, so far).
  780.  
  781. 121.  Btrieve (DOS, and see 140 for OS/2 and Windows)
  782.  
  783.       For extended files: if the machine reboots in the middle of
  784.       a transaction, a subsequent open wouldn't be able to open the
  785.       file (returning stat.14 - preimage open error)
  786.  
  787. 122.  Btrieve (DOS, and see 136 for OS/2 and Windows)
  788.  
  789.       If multiple operations coming from two or more workstations at the same
  790.       time, that change the file are executed on a file located on a network
  791.       drive and the log feature is active for that file, only the activity
  792.       of one workstation is logged.
  793.       In addition if a system crash happened on the server during the change
  794.       the directory entry of the log file might not be set on the disk
  795.       according to the change. It depends on the version of the NetWare Shell.
  796.       This patch can correct both of the problems. The solution for the second
  797.       problem is conditional. It should not be applied if the version of the
  798.       NetWare Shell is ver 3.2 or greater.
  799.       (This patch uses the new patch area.)
  800.  
  801. 123.  Btrieve (DOS, and see 143 for OS/2 and Windows)
  802.  
  803.       This bug pertains only to Zstring and Lstring keys which are flagged
  804.       with the NULL or MANUAL attribute.  If an application updates a
  805.       record and changes the key from NULL to non-NULL (or vice versa) by
  806.       changing bytes beyond the end of the Zstring/Lstring from the null
  807.       character to any other character (or vice versa), the index is not
  808.       updated to reflect the change in the key.
  809.  
  810. 124.  Btrieve (DOS and see 146 for OS/2 and Windows)
  811.  
  812.       This is a re-release of what used to be patch 98.  It is being re-
  813.       released because 1) it should not be optional; 2) it incorrectly
  814.       expected 'CU' in the header signature, whereas Btrieve NLM expects
  815.       'UC'; 3) it is now available on the OS/2 and Windows platforms (as
  816.       well as on the version 5.15 VAP -- see BUGS.515), whereas the original
  817.       patch 98 was only for DOS.  The original description of the patch:
  818.  
  819.       This patch implements an enhancement to the GET_EXTENDED API to
  820.       allow it to use the current record as the starting point, rather than
  821.       the next record.  The header signature "UC" must be used instead of the
  822.       normal extended get signature, "EG".
  823.  
  824. 125.  Btrieve (DOS, see 164 for Windows, and see 156 for OS/2)
  825.  
  826.       When a file having been opened in accelerated mode is touched within a
  827.       transaction (e.g. by a Get Equal) and right after this operation the
  828.       transaction is closed, an update on the record you got in the
  829.       transaction returns a status 80 (Conflict) though only one
  830.       workstation with one position block is active. Having applied this
  831.       patch the update finishes successfully as it was expected.
  832.  
  833. 126.  Btrieve (DOS, see 148 for OS/2 and Windows)
  834.  
  835.       Fixes the following: if an application has more than one position
  836.       block for the same file (i.e., it called Btrieve's OPEN function
  837.       for a file it already had opened), when it closes the file, the
  838.       preimage file might not be deleted, depending on which position
  839.       block is closed first.
  840.  
  841. 127.  Same as patch #2 for Bserver vap, but this is for DOS)
  842.  
  843.       Files with variable size records can become corrupted (in the variable
  844.       pages) if the page size is at least 1024 and the user stores many
  845.       records with extremely short (1 to 2 byte) variable parts.
  846.  
  847. 128.  Btrieve (DOS, and see 150 for OS/2 and Windows)
  848.  
  849.       If you have a file with key and both the duplicates and null keys are
  850.       allowed, a GET DIRECT (op.23) on a record with null key could give
  851.       different status codes (st.82 or st.44) depending on whether the key is
  852.       a permanent or a supplemental key. This patch ensures that always the
  853.       proper status code (44) will be returned on a GET DIRECT like that.
  854.  
  855. 129.  Btrieve (DOS, and see 151 for OS/2 and Windows)
  856.  
  857.       With multiple processes accessing the same file, there is a potential
  858.       for the key pages to be invalid as far as the parent stack is concerned.
  859.       If the next key is not found on the parent page, it should reestablish
  860.       the parent stack and start from the beginning.
  861.  
  862. 130.  Btrieve (DOS, see 160 for Windows, and see 138 for OS/2)
  863.  
  864.       If the machine is turned off or rebooted between the time a Btrieve
  865.       file has marked as having a pre-image file and the time the pre-image
  866.       file is created, the file cannot be opened. Btrieve returns status 14.
  867.       This patch fixes the problem caused by a timing window, and it ensures
  868.       that the file can be opened.
  869.  
  870. 131.  Btrieve OS/2 and Windows(see 120 for dos)
  871.  
  872.       The usage count does not need to be read for files opened in exlusive
  873.       mode. This eliminates a disk read for each operation.  There are no bad
  874.       effects from reading the count, but is simply a wasted effort.
  875.  
  876. Grow Patch Btrieve OS2 and Windows
  877.  
  878.       This patch does not fix any bug, but instead allocates a new patch
  879.       area, to be used by subsequent patches.  It will increase the size
  880.       of BTRIEVE.EXE, WBTRCALL.DLL and BTRCALLS.DLL by 512 bytes, and
  881.       cause Btrieve to use an additional 512 bytes of RAM.
  882.  
  883. 132.  Btrieve OS/2 and Windows (see 118 for dos)
  884.  
  885.       This patch enables Btrieve to understand Shift-JIS DBCS characters in
  886.       file specifications, so that our Japanese customers can use Kanji
  887.       characters in their Btrieve filenames.  The patch follows the Shift-JIS
  888.       standard, namely that code points in the ranges 0x81-0x9F and
  889.       0xE0-0xFC are the 1st byte of a double-byte character and that the
  890.       second byte of a double-byte character is never less than 0x40.
  891.       Do not apply this patch unless you are running in a DBCS (Shift-JIS)
  892.       environment.
  893.       (This patch uses the new patch area.)
  894.  
  895. 133.  Btrieve OS/2 (see 112 for dos)
  896.  
  897.       If the file opened in accelerated mode returns status 5 during an
  898.       update the file might become corrupted without any spectacular
  899.       symptom of the corruption. (In the reported case a key was lost
  900.       from the Btree.)
  901.  
  902. 134.  Btrieve OS2 (see 111 for dos)
  903.  
  904.       During insertation and update, unnecessary key pages are recorded in
  905.       .PRE file.
  906.  
  907. 135.  Btrieve OS2 (see 113 for dos)
  908.  
  909.       The following bugs have been fixed regarding to GET_DIRECT operation:
  910.        - GET_DIRECT after deletion of the record by another application gives
  911.          status 2.
  912.        - GET_NEXT after GET_DIRECT returns status 9, if the file contains
  913.          records with duplicate values.
  914.        - Sometimes the returned status code by GET_DIRECT following a
  915.          DELETE operation are different.
  916.        - In certain cases after deletion of the last record GET_DIRECT
  917.          does not report an error status on the just deleted record.
  918.  
  919. 136.  Btrieve OS/2 and Windows (see 122 for dos)
  920.  
  921.       If multiple operations coming from two or more workstations at the same
  922.       time, that change the file are executed on a file located on a network
  923.       drive and the log feature is active for that file, only the activity
  924.       of one workstation is logged.
  925.       In addition if a system crash happened on the server during the change
  926.       the directory entry of the log file might not be set on the disk
  927.       according to the change. It depends on the version of the NetWare Shell.
  928.       This patch can correct both of the problems. The solution for the second
  929.       problem is conditional. It should not be applied if the version of the
  930.       NetWare Shell is ver 3.2 or greater.
  931.       (This patch uses the new patch area.)
  932.  
  933. 137.  Btrieve OS/2 and Windows (see 119 for dos)
  934.  
  935.       If you set up an extended step/get operation (op.36/37/38/39) to only
  936.       return record positions (NumOfFields = 0) and not any of the record
  937.       data and you specify the data buffer just as long as required
  938.       by Btrieve you will get a status 22.
  939.       This patch fixes the problem and returns the record positions.
  940.  
  941. 138.  Btrieve OS/2 (see 130 for dos and 160 for Windows)
  942.  
  943.       If the machine is turned off or rebooted between the time a Btrieve
  944.       file has marked as having a pre-image file and the time the pre-image
  945.       file is created, the file cannot be opened. Btrieve returns status 14.
  946.       This patch fixes the problem caused by a timing window, and it ensures
  947.       that the file can be opened.
  948.  
  949. 139.  Btrieve (OS/2)
  950.  
  951.       If the user has the Lazy Writer on by the folling in CONFIG.SYS
  952.            RUN=C:\OS2\CACHE.EXE /LAZY:ON
  953.       files may be corrupted and data lost if the machine is rebooted or
  954.       turned off while the application is still active.  The patch turns on
  955.       the WRITE-THRU flag on all files opend by Btrieve to bypass the
  956.       Lazy Writer caching.
  957.  
  958. 140.  Btrieve OS/2 and Windows(see 121 for dos)
  959.       (also in the 5.15 vap, see other bug file)
  960.  
  961.       For extended files: if the machine reboots in the middle of
  962.       a transaction, a subsequent open wouldn't be able to open the
  963.       file (returning stat.14 - preimage open error)
  964.  
  965. 141.  Btrieve (OS/2, Windows, DOS)
  966.  
  967.       A pre-image file never decreases in size. Only when the file is finally
  968.       closed and the pre-image file deleted is the disk space freed.  A large
  969.       transaction can create huge pre-image files which will stay that way until
  970.       the file is deleted.  This patch truncates the pre-image file to a maximum
  971.       of the same number of pages in the Btrieve file at End Transaction.
  972.       (Only released for OS/2 so far)
  973.  
  974. 142.  Btrieve OS/2 and Windows (see 117 for dos)
  975.  
  976.       Actually this bug is caused by patch #133. This patch fixes the problem
  977.       with the patch #133. Both of these patches should be used to eliminate
  978.       the original bug mentioned at patch #133.
  979.  
  980. 143.  Btrieve OS/2 and Windows (see 123 for dos)
  981.  
  982.       This bug pertains only to Zstring and Lstring keys which are flagged
  983.       with the NULL or MANUAL attribute.  If an application updates a
  984.       record and changes the key from NULL to non-NULL (or vice versa) by
  985.       changing bytes beyond the end of the Zstring/Lstring from the null
  986.       character to any other character (or vice versa), the index is not
  987.       updated to reflect the change in the key.
  988.  
  989. 144.  Btrieve (OS/2, Windows)
  990.  
  991.       Btrieve was looking beyond the end of the data buffer when searching
  992.       for non-repeating chars during record compression.  If the user
  993.       allocted a specific size for the buffer which matched the data length,
  994.       we would attempt to read beyond the segment limit resulting in a
  995.       protection violation.
  996.  
  997. 145.  Btrieve (OS/2, Windows)
  998.  
  999.       Btrieve would incorrectly write into the user's data buffer's segment,
  1000.       often causing a protection violation, when a status 62 (Invalid
  1001.       Descriptor) was returned from an Extended Get/Step.  This bug also
  1002.       existed in DOS Btrieve, but is fixed by the next patch.
  1003.  
  1004. 146.  Btrieve OS/2 and Windows (see 124 for dos)
  1005.  
  1006.       This is a re-release of what used to be patch 98.  It is being re-
  1007.       released because 1) it should not be optional; 2) it incorrectly
  1008.       expected 'CU' in the header signature, whereas Btrieve NLM expects
  1009.       'UC'; 3) it is now available on the OS/2 and Windows platforms (as
  1010.       well as on the version 5.15 VAP -- see BUGS.515), whereas the original
  1011.       patch 98 was only for DOS.  The original description of the patch:
  1012.  
  1013.       This patch implements an enhancement to the GET_EXTENDED API to
  1014.       allow it to use the current record as the starting point, rather than
  1015.       the next record.  The header signature "UC" must be used instead of the
  1016.       normal extended get signature, "EG".
  1017.  
  1018. 147.  Btrieve (Windows, OS/2)
  1019.  
  1020.       A hyphen in the transaction control file specification cause Btrieve
  1021.       initialization to fail.
  1022.  
  1023. 148.  Btrieve OS/2 and Windows (see 126 for dos)
  1024.  
  1025.       Fixes the following: if an application has more than one position
  1026.       block for the same file (i.e., it called Btrieve's OPEN function
  1027.       for a file it already had opened), when it closes the file, the
  1028.       preimage file might not be deleted, depending on which position
  1029.       block is closed first.
  1030.  
  1031. 149.  Btrieve (DOS, Windows, OS/2)
  1032.  
  1033.       An enhancement: this patch lets applications define case-insensitive
  1034.       keys by setting the 0x0400 bit in the key flags word for a Create or
  1035.       Create Supplemental Index call.  But be forewarned: unpatched, older
  1036.       Btrieves may misinterpret and even corrupt these case-insensitive keys.
  1037.  
  1038. 150.  Btrieve OS/2 and Windows (see 128 for dos)
  1039.  
  1040.       If you have a file with key and both the duplicates and null keys are
  1041.       allowed, a GET DIRECT (op.23) on a record with null key could give
  1042.       different status codes (st.82 or st.44) depending on whether the key is
  1043.       a permanent or a supplemental key. This patch ensures that always the
  1044.       proper status code (44) will be returned on a GET DIRECT like that.
  1045.  
  1046. 151.  Btrieve OS/2 and Windows (see 129 for dos)
  1047.  
  1048.       With multiple processes accessing the same file, there is a potential
  1049.       for the key pages to be invalid as far as the parent stack is concerned.
  1050.       If the next key is not found on the parent page, it should reestablish
  1051.       the parent stack and start from the beginning.
  1052.  
  1053. 152.  Btrieve (OS/2)
  1054.      
  1055.       Actually a correction to patch 96.  The incorrect patch causes status 87
  1056.       to be returned after a large number of operations which expand the file.
  1057.  
  1058. 153.  Btrieve (OS/2, see 161 for Windows)
  1059.  
  1060.       Patch to fix patch 105.
  1061.  
  1062. 154.  Btrieve (DOS & OS\2, see 162 for Windows)
  1063.  
  1064.       If the workstation reboots while Btrieve is working on an End Trans
  1065.       (op. 20) and a couple of files were involved in that transaction, it is
  1066.       possible that the transaction has been finished for a few file while
  1067.       others still remain in inconsistant states. The result is that a few
  1068.       file shows the changes while others does not (after the automatic
  1069.       recovery). Normally, Btrieve's 'transaction recovery' feature solves the
  1070.       problem by marking the files having been changed in a transaction as
  1071.       incomplete files at the time when Btrieve is loaded again.
  1072.       In the reported case this feature did not work. This patch ensures
  1073.       the perfect and correct solution of the described problem.
  1074.  
  1075. 155.  Btrieve (OS/2, See 169 for DOS and Windows)
  1076.  
  1077.       Doing a Get Next (op.6) / Previous (op.7) with key bias (+50) or a
  1078.       Get LT (op.10) on a key-only file with duplicates Btrieve either did
  1079.       not return the expected key or got stuck in an infinite loop.
  1080.       The key bias (+50) was ignored on a key-only file namely both the
  1081.       databuffer and the keybuffer were updated.
  1082.       This patch ensures in one hand the correct positioning on the other
  1083.       hand that the databuffer does not get updated when the key bias was
  1084.       applied.
  1085.       (Only released for OS/2 so far)
  1086.  
  1087. 156.  Btrieve OS/2 (see 125 for dos and 164 for Windows)
  1088.  
  1089.       When a file having been opened in accelerated mode is touched within a
  1090.       transaction (e.g. by a Get Equal) and right after this operation the
  1091.       transaction is closed, an update on the record you got in the
  1092.       transaction returns a status 80 (Conflict) though only one
  1093.       workstation with one position block is active. Having applied this
  1094.       patch the update finishes successfully as it was expected.
  1095.  
  1096. 157.  Btrieve (OS/2, see 166 for Windows) 
  1097.  
  1098.       Patch to fix patch 144.
  1099.  
  1100. 158.  Btrieve (OS/2, see 165 for Windows)
  1101.  
  1102.       Same as patch #46 for DOS.
  1103.  
  1104. 159.  Btrieve (OS/2)
  1105.  
  1106.       Actually a logical problem between patches #73 and #103
  1107.  
  1108.  
  1109. 160.  Btrieve Windows (see 130 for dos and 138 for OS\2)
  1110.  
  1111.       If the machine is turned off or rebooted between the time a Btrieve
  1112.       file has marked as having a pre-image file and the time the pre-image
  1113.       file is created, the file cannot be opened. Btrieve returns status 14.
  1114.       This patch fixes the problem caused by a timing window, and it ensures
  1115.       that the file can be opened.
  1116.  
  1117. 161.  Btrieve (Windows, see 153 for OS\2)
  1118.  
  1119.       Patch to fix patch 105.
  1120.  
  1121.  
  1122. 162.  Btrieve (Windows, see 154 for OS\2)
  1123.  
  1124.       If the workstation reboots while Btrieve is working on an End Trans
  1125.       (op. 20) and a couple of files were involved in that transaction, it is
  1126.       possible that the transaction has been finished for a few file while
  1127.       others still remain in inconsistant states. The result is that a few
  1128.       file shows the changes while others does not (after the automatic
  1129.       recovery). Normally, Btrieve's 'transaction recovery' feature solves the
  1130.       problem by marking the files having been changed in a transaction as
  1131.       incomplete files at the time when Btrieve is loaded again.
  1132.       In the reported case this feature did not work. This patch ensures
  1133.       the perfect and correct solution of the described problem.
  1134.       (DOS patch pending)
  1135.  
  1136. 163.  Btrieve (Windows, see 103 for OS\2)
  1137.  
  1138.       If errors occur during a CLOSE, continue processing to clean out AFL
  1139.       and close the handle to clear the system handle table.
  1140.  
  1141. 164.  Btrieve Windows (see 125 for dos and 156 for OS\2)
  1142.  
  1143.       When a file having been opened in accelerated mode is touched within a
  1144.       transaction (e.g. by a Get Equal) and right after this operation the
  1145.       transaction is closed, an update on the record you got in the
  1146.       transaction returns a status 80 (Conflict) though only one
  1147.       workstation with one position block is active. Having applied this
  1148.       patch the update finishes successfully as it was expected.
  1149.  
  1150. 165.  Btrieve (Windows, see 158 for OS\2)
  1151.  
  1152.       Same as patch #46 for DOS.
  1153.  
  1154. 166.  Btrieve (Windows, see 157 for OS/2) 
  1155.  
  1156.       Patch to fix patch 144.
  1157.  
  1158. 167.  Btrieve (Windows, see 172 for DOS)
  1159.  
  1160.       Fixes the following: when a file is created with the pre-allocation
  1161.       flag set and the file's page size multiplied by the number of pages
  1162.       to pre-allocate is an even multiple of 65536, an additional 65536
  1163.       bytes are pre-allocated to the file.
  1164.       (Only released for DOS and Windows so far.)
  1165.  
  1166.  
  1167. 168.  Btrieve (DOS)
  1168.  
  1169.       When Btrieve is used WITHOUT the /e (no expanded memory) option with new
  1170.       memory managers (QEMM386 6.0, etc) and other TSRs such as NETX, it can
  1171.       sometimes hang at load time.  This is because Btrieve starts with a
  1172.       small initial DOS stack and then changes over to its main stack.  If
  1173.       deep interrupts occur or calls are made to the EMS system during this
  1174.       load time, the stack limit can be exceeded and an exception interrupt
  1175.       can occur which will abend QEMM386.  This fix increases the stack size.
  1176.  
  1177.  
  1178. 169.  Btrieve (DOS, see  155 for OS/2)
  1179.  
  1180.       See patch #155's description.
  1181.  
  1182.       (Pending:    WIN patch).
  1183.  
  1184.  
  1185. 170.  Btrieve (DOS)
  1186.  
  1187.       Fixes a bug where one user, waiting for a lock to be released by
  1188.       another user and receiving 84's, would suddenly get a status 85 and
  1189.       would then get the record invalidly on the next operation.  This was
  1190.       caused by failing to test for the former condition in one specific
  1191.       branch of the locking code.
  1192.  
  1193.       (Pending:    WIN & OS2 patches).
  1194.  
  1195.  
  1196. 171.  Btrieve (DOS)
  1197.  
  1198.       Fixes a bug where a status 84 could be received on UNLOCK when using
  1199.       multiple record locks. This was caused by the increment of the wrong
  1200.       pointer within the unlock loop.
  1201.  
  1202.       (Pending:    WIN & OS2 patches).
  1203.  
  1204.  
  1205. 172.  Btrieve (DOS, see 167 for Windows)
  1206.  
  1207.       See patch #167's description.
  1208.  
  1209.       (Pending:    OS2 patch).
  1210.  
  1211.  
  1212. 173.  Btrieve (DOS)
  1213.  
  1214.       Fixes the following bug: Given a Btrieve file which already shows 
  1215.       a certain pattern of corruption (specifically, the file's key 
  1216.       descriptors contain unreasonably large values for the key's offset 
  1217.       and length), Btrieve will try to return a status 19, Unrecoverable 
  1218.       Error, into the callers STATUS variable.  But because Btrieve fails 
  1219.       to apply a segment override, it incorrectly writes the 19 to the 
  1220.       wrong address.  Thus a status 0 is returned incorrectly.  In 
  1221.       protected mode environments, this stray write will likely cause 
  1222.       a segmentation violation.
  1223.  
  1224.       (Pending:    WIN & OS2 patches).
  1225.  
  1226.  
  1227. 174.  Btrieve (DOS)
  1228.  
  1229.       Fixes the following problem: when two or more workstations are
  1230.       updating a Btrieve file concurrently, and at least one workstation 
  1231.       is using Btrieve transactions, and Btrieve is configured to log
  1232.       activity on that file, the log file may become corrupt.
  1233.  
  1234.       (Pending:    WIN & OS2 patches).
  1235.  
  1236.  
  1237. 175.  Btrieve (DOS)
  1238.  
  1239.       When you open a file in exclusive mode and do an insert operation
  1240.       that expands the file by adding one or more new pages to the file AND
  1241.       right after the insert the Operating System, whose File System manages 
  1242.       the disk I/Os, crashes, the data file can be truncated which means a 
  1243.       data loss.
  1244.  
  1245.       This patch fixes the problem by forcing an update of the directory.
  1246.       The way it is done is vary depending on the Operating System (e.g.
  1247.       DOS version number, NetWare Shell version number) so please apply the
  1248.       patch according to the comment (if any) you can find in the patch file.
  1249.  
  1250.       (Pending:    WIN & OS2 patches).
  1251.  
  1252.  
  1253. 176.  Btrieve (DOS)
  1254.  
  1255.       Some customers have reported garbage being written beginning at
  1256.       offset 400H in their files' FCR page.  That part of the FCR is 
  1257.       unused anyway, but some customers have reported that eventually 
  1258.       such files will experience corruption of their index definitions.
  1259.  
  1260.       This patch fixes the problem by ensuring that Btrieve does not
  1261.       put the garbage into the FCR.
  1262.  
  1263.       (Pending:    WIN & OS2 patches).
  1264.      
  1265.  
  1266. 177.  Btrieve (DOS)
  1267.  
  1268.       Fixes a bug which caused a status 58 (compress buffer too small)
  1269.       to be incorrectly returned intermittently on Updates and
  1270.       Deletes, when these operations follow an Insert, Update, or any
  1271.       read operation on another file which uses blank-truncated 
  1272.       records.
  1273.  
  1274.       (Pending:    WIN & OS2 patches).
  1275.  
  1276.  
  1277. 178.  Btrieve (DOS)
  1278.  
  1279.       When you try to insert a record into a file with a descending,
  1280.       autoincrement key that already has some records in it, you can get
  1281.       an erroneous status 5 (Duplicate key value).
  1282.  
  1283.       This patch ensures that a record with binary zeros in the field of
  1284.       the autoincrement key can be inserted even if the key is defined as a 
  1285.       descending key.
  1286.  
  1287.       (Pending:    WIN & OS2 patches).
  1288.  
  1289.  
  1290.